{
 "cells": [
  {
   "cell_type": "code",
   "execution_count": 1,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Populating the interactive namespace from numpy and matplotlib\n"
     ]
    }
   ],
   "source": [
    "%pylab inline"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 2,
   "metadata": {},
   "outputs": [],
   "source": [
    "from sklearn import datasets\n",
    "from sklearn.decomposition import PCA\n",
    "from sklearn.discriminant_analysis import LinearDiscriminantAnalysis"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 3,
   "metadata": {},
   "outputs": [],
   "source": [
    "iris = datasets.load_iris()\n",
    "X = iris.data\n",
    "y = iris.target\n",
    "target_names = iris.target_names"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 13,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "array(['setosa', 'versicolor', 'virginica'], dtype='<U10')"
      ]
     },
     "execution_count": 13,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "target_names"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 8,
   "metadata": {},
   "outputs": [],
   "source": [
    "pca = PCA(n_components=2)\n",
    "X_r = pca.fit(X).transform(X)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 9,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "array([[-2.68412563,  0.31939725],\n",
       "       [-2.71414169, -0.17700123],\n",
       "       [-2.88899057, -0.14494943],\n",
       "       [-2.74534286, -0.31829898],\n",
       "       [-2.72871654,  0.32675451],\n",
       "       [-2.28085963,  0.74133045],\n",
       "       [-2.82053775, -0.08946138],\n",
       "       [-2.62614497,  0.16338496],\n",
       "       [-2.88638273, -0.57831175],\n",
       "       [-2.6727558 , -0.11377425],\n",
       "       [-2.50694709,  0.6450689 ],\n",
       "       [-2.61275523,  0.01472994],\n",
       "       [-2.78610927, -0.235112  ],\n",
       "       [-3.22380374, -0.51139459],\n",
       "       [-2.64475039,  1.17876464],\n",
       "       [-2.38603903,  1.33806233],\n",
       "       [-2.62352788,  0.81067951],\n",
       "       [-2.64829671,  0.31184914],\n",
       "       [-2.19982032,  0.87283904],\n",
       "       [-2.5879864 ,  0.51356031],\n",
       "       [-2.31025622,  0.39134594],\n",
       "       [-2.54370523,  0.43299606],\n",
       "       [-3.21593942,  0.13346807],\n",
       "       [-2.30273318,  0.09870885],\n",
       "       [-2.35575405, -0.03728186],\n",
       "       [-2.50666891, -0.14601688],\n",
       "       [-2.46882007,  0.13095149],\n",
       "       [-2.56231991,  0.36771886],\n",
       "       [-2.63953472,  0.31203998],\n",
       "       [-2.63198939, -0.19696122],\n",
       "       [-2.58739848, -0.20431849],\n",
       "       [-2.4099325 ,  0.41092426],\n",
       "       [-2.64886233,  0.81336382],\n",
       "       [-2.59873675,  1.09314576],\n",
       "       [-2.63692688, -0.12132235],\n",
       "       [-2.86624165,  0.06936447],\n",
       "       [-2.62523805,  0.59937002],\n",
       "       [-2.80068412,  0.26864374],\n",
       "       [-2.98050204, -0.48795834],\n",
       "       [-2.59000631,  0.22904384],\n",
       "       [-2.77010243,  0.26352753],\n",
       "       [-2.84936871, -0.94096057],\n",
       "       [-2.99740655, -0.34192606],\n",
       "       [-2.40561449,  0.18887143],\n",
       "       [-2.20948924,  0.43666314],\n",
       "       [-2.71445143, -0.2502082 ],\n",
       "       [-2.53814826,  0.50377114],\n",
       "       [-2.83946217, -0.22794557],\n",
       "       [-2.54308575,  0.57941002],\n",
       "       [-2.70335978,  0.10770608],\n",
       "       [ 1.28482569,  0.68516047],\n",
       "       [ 0.93248853,  0.31833364],\n",
       "       [ 1.46430232,  0.50426282],\n",
       "       [ 0.18331772, -0.82795901],\n",
       "       [ 1.08810326,  0.07459068],\n",
       "       [ 0.64166908, -0.41824687],\n",
       "       [ 1.09506066,  0.28346827],\n",
       "       [-0.74912267, -1.00489096],\n",
       "       [ 1.04413183,  0.2283619 ],\n",
       "       [-0.0087454 , -0.72308191],\n",
       "       [-0.50784088, -1.26597119],\n",
       "       [ 0.51169856, -0.10398124],\n",
       "       [ 0.26497651, -0.55003646],\n",
       "       [ 0.98493451, -0.12481785],\n",
       "       [-0.17392537, -0.25485421],\n",
       "       [ 0.92786078,  0.46717949],\n",
       "       [ 0.66028376, -0.35296967],\n",
       "       [ 0.23610499, -0.33361077],\n",
       "       [ 0.94473373, -0.54314555],\n",
       "       [ 0.04522698, -0.58383438],\n",
       "       [ 1.11628318, -0.08461685],\n",
       "       [ 0.35788842, -0.06892503],\n",
       "       [ 1.29818388, -0.32778731],\n",
       "       [ 0.92172892, -0.18273779],\n",
       "       [ 0.71485333,  0.14905594],\n",
       "       [ 0.90017437,  0.32850447],\n",
       "       [ 1.33202444,  0.24444088],\n",
       "       [ 1.55780216,  0.26749545],\n",
       "       [ 0.81329065, -0.1633503 ],\n",
       "       [-0.30558378, -0.36826219],\n",
       "       [-0.06812649, -0.70517213],\n",
       "       [-0.18962247, -0.68028676],\n",
       "       [ 0.13642871, -0.31403244],\n",
       "       [ 1.38002644, -0.42095429],\n",
       "       [ 0.58800644, -0.48428742],\n",
       "       [ 0.80685831,  0.19418231],\n",
       "       [ 1.22069088,  0.40761959],\n",
       "       [ 0.81509524, -0.37203706],\n",
       "       [ 0.24595768, -0.2685244 ],\n",
       "       [ 0.16641322, -0.68192672],\n",
       "       [ 0.46480029, -0.67071154],\n",
       "       [ 0.8908152 , -0.03446444],\n",
       "       [ 0.23054802, -0.40438585],\n",
       "       [-0.70453176, -1.01224823],\n",
       "       [ 0.35698149, -0.50491009],\n",
       "       [ 0.33193448, -0.21265468],\n",
       "       [ 0.37621565, -0.29321893],\n",
       "       [ 0.64257601,  0.01773819],\n",
       "       [-0.90646986, -0.75609337],\n",
       "       [ 0.29900084, -0.34889781],\n",
       "       [ 2.53119273, -0.00984911],\n",
       "       [ 1.41523588, -0.57491635],\n",
       "       [ 2.61667602,  0.34390315],\n",
       "       [ 1.97153105, -0.1797279 ],\n",
       "       [ 2.35000592, -0.04026095],\n",
       "       [ 3.39703874,  0.55083667],\n",
       "       [ 0.52123224, -1.19275873],\n",
       "       [ 2.93258707,  0.3555    ],\n",
       "       [ 2.32122882, -0.2438315 ],\n",
       "       [ 2.91675097,  0.78279195],\n",
       "       [ 1.66177415,  0.24222841],\n",
       "       [ 1.80340195, -0.21563762],\n",
       "       [ 2.1655918 ,  0.21627559],\n",
       "       [ 1.34616358, -0.77681835],\n",
       "       [ 1.58592822, -0.53964071],\n",
       "       [ 1.90445637,  0.11925069],\n",
       "       [ 1.94968906,  0.04194326],\n",
       "       [ 3.48705536,  1.17573933],\n",
       "       [ 3.79564542,  0.25732297],\n",
       "       [ 1.30079171, -0.76114964],\n",
       "       [ 2.42781791,  0.37819601],\n",
       "       [ 1.19900111, -0.60609153],\n",
       "       [ 3.49992004,  0.4606741 ],\n",
       "       [ 1.38876613, -0.20439933],\n",
       "       [ 2.2754305 ,  0.33499061],\n",
       "       [ 2.61409047,  0.56090136],\n",
       "       [ 1.25850816, -0.17970479],\n",
       "       [ 1.29113206, -0.11666865],\n",
       "       [ 2.12360872, -0.20972948],\n",
       "       [ 2.38800302,  0.4646398 ],\n",
       "       [ 2.84167278,  0.37526917],\n",
       "       [ 3.23067366,  1.37416509],\n",
       "       [ 2.15943764, -0.21727758],\n",
       "       [ 1.44416124, -0.14341341],\n",
       "       [ 1.78129481, -0.49990168],\n",
       "       [ 3.07649993,  0.68808568],\n",
       "       [ 2.14424331,  0.1400642 ],\n",
       "       [ 1.90509815,  0.04930053],\n",
       "       [ 1.16932634, -0.16499026],\n",
       "       [ 2.10761114,  0.37228787],\n",
       "       [ 2.31415471,  0.18365128],\n",
       "       [ 1.9222678 ,  0.40920347],\n",
       "       [ 1.41523588, -0.57491635],\n",
       "       [ 2.56301338,  0.2778626 ],\n",
       "       [ 2.41874618,  0.3047982 ],\n",
       "       [ 1.94410979,  0.1875323 ],\n",
       "       [ 1.52716661, -0.37531698],\n",
       "       [ 1.76434572,  0.07885885],\n",
       "       [ 1.90094161,  0.11662796],\n",
       "       [ 1.39018886, -0.28266094]])"
      ]
     },
     "execution_count": 9,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "X_r"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 14,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "array([0.92461872, 0.05306648])"
      ]
     },
     "execution_count": 14,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "pca.explained_variance_ratio_"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 15,
   "metadata": {},
   "outputs": [],
   "source": [
    "colors = ['navy', 'turquoise', 'darkorange']"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 16,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "Text(0.5, 1.0, 'PCA of IRIS dataset')"
      ]
     },
     "execution_count": 16,
     "metadata": {},
     "output_type": "execute_result"
    },
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "plt.figure()\n",
    "for color, i, target_name in zip(colors, [0,1,2], target_names):\n",
    "    plt.scatter(X_r[y==i, 0], X_r[y==i, 1], color=color, alpha=0.8, lw=2, label=target_name)\n",
    "plt.legend(loc=\"best\", shadow=False,scatterpoints=1)\n",
    "plt.title(\"PCA of IRIS dataset\")"
   ]
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "Python 3",
   "language": "python",
   "name": "python3"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.6.9"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 4
}
